package tech.yunjing.train.dao;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import tech.yunjing.train.entity.Account;

import java.util.List;
import java.util.Map;

/**
 * 账户管理接口
 * Created by ZhangFan on 2017/6/8.
 */
@Repository
@Mapper
public interface AccountDao {
    /**
     * 根据账户名获取账户信息
     *
     * @param accountName 账户名
     * @return 账户对象
     */
    Account findByAccountName(String accountName);

    /**
     * 根据账户Id获取账户信息
     *
     * @param accountId 账户id
     * @return 账户对象
     */
    Account findByAccountId(Integer accountId);

    /**
     * 新增账户
     *
     * @param account 账户对象
     * @return 增加记录条数
     */
    int insertAccount(Account account);

    /**
     * 根据账户名改变用户状态实现逻辑删除
     *
     * @param accountName 账户名
     * @return 删除记录条数
     */
    int deleteAccount(String accountName);

    /**
     * 查看账户状态值为0的所有账户信息
     *
     * @return List<Account> 账户集合
     */
    List<Account> findNamesByAccountStatus();

    /**
     * 根据用户名更改支付密码
     *
     * @param params (包含账户名，旧支付密码，新支付密码)
     * @return 更改记录数
     */
    int updatePaymentPasswordByAccountName(Map params);

    /**
     * 根据账户名更改余额
     *
     * @param params （包含账户名，账户余额）
     * @return 更改记录数
     */
    int updateBalanceByAccountName(Map params);
}
